from datetime import datetime, timedelta
import cnlunar

from douBao import Doubao


class cnlunar_day:
    def __init__(self, config ):
        if config is None:
            config = {}
        # 从 config 字典中获取属性值，若不存在则使用默认值
        self.db_base_url = config.get('db_base_url', "https://ark.cn-beijing.volces.com/api/v3")
        self.db_api_key = config.get('db_api_key', "")
        self.init_prompt = config.get('init_prompt', "深厚积累了有关 黄历玄学知识、 短视频脚本创作时，你需要充分融合这些专业背景知识； 根据用户输入的主题创作需求，进行短视频脚本创作  多多使用口语容易让人理解的话  开头为  ,日日看黄历 事事皆顺利  需要详细的 以下 值日 做什么类型的事情比较顺利 什么是不建议做(结合生活) 值神是谁 这一天需要注意的是 建议做或不建议做的事情 (结合生活)   说一下 属相相冲的  根据幸运色推荐衣服 和麻将的方位  注意避免的 不要带 '儿' 这个字 根据输入的消息来润色脚本不需要写镜头  画面 和天气 也不要输出表格文章 410 字左右")



    def cnlunar_days (self, dateArr):
        cnlunar_str = []
        num=0
        for day in dateArr:
            # 去除空格
            num=num+1
            day = day.replace(" ", "")
            strDate = datetime.strptime(day, "%Y-%m-%d")
            strDate=self.cnlunar_day(strDate)
            # self.prompts[day]={"id":num,"cnlunar":strDate}
            cnlunar_str.append(   {"day": day, "cnlunar_str": strDate})

            print("strDate.....", cnlunar_str)

        return cnlunar_str

    def get_video_text(self,dateArr ):
        doubaoVS = Doubao(self.db_base_url, self.db_api_key, self.init_prompt)
        cnlunar_str = []
        num = 0
        for day in dateArr:
            # 去除空格
            num = num + 1
            day = day.replace(" ", "")
            strDate = datetime.strptime(day, "%Y-%m-%d")
            strDate = self.cnlunar_day(strDate)
            # self.prompts[day]={"id":num,"cnlunar":strDate}
            prompts = doubaoVS.generate_text(strDate)
            cnlunar_str.append({"day": day, "cnlunar_str": strDate,"video_scripts":prompts})
            print("strDate.....", cnlunar_str)

        return cnlunar_str



    # def get_video_text(self, dateArr=[],init_prompt=""):
    #     doubaoVS = Doubao(self.db_base_url, self.db_api_key, init_prompt)
    #     self.get_video_text(dateArr)



    def cnlunar_day(self, 日期):
        text = []
        
       
        # 检查日期类型
        if not isinstance(日期, datetime):
            error_msg = f"时间类型不正确: 需要datetime对象，但收到了{type(日期)}"
            print(error_msg)
            raise TypeError(error_msg)
 
        hl = cnlunar.Lunar(日期, godType='8char')

        mdic = {
            '月份': hl.date.month,
            "日期": hl.date.day,
            '农历月': hl.lunarMonthCn[0:2],
            '农历日': hl.lunarDayCn,
            '星期': hl.weekDayCn,
            '生肖冲煞': hl.chineseZodiacClash,
            '值日': hl.get_today12DayOfficer()[0],
            '值神': hl.get_today12DayOfficer()[1]
        }
        replace_dict = {
            '廿': '二十',
            '卅': '三十'
        }
        for old_str, new_str in replace_dict.items():
            mdic["农历日"] = mdic["农历日"].replace(old_str, new_str)
        for key, value in mdic.items():
            text.append(f"{key}: {value}")
        return ', '.join(text)



if __name__ == "__main__":
    # 示例：如何使用单例模式的 AutoTTS
    pass

